package com.cskaoyan.charstream.transfer.in;

import java.io.*;

/*
          public int read()
           读取单个字符
          返回值:
           a. 作为整数读取的字符，范围在 0 到 65535 之间 (0x00-0xffff)，
           b. 如果已到达流的末尾，则返回 -1

         public int read(char[] cbuf)
           将字符读入数组
           返回值:
           a. 读取的字符数，
           b. 如果已到达流的末尾，则返回 -1

         public int read(char[] cbuf，int off ,int len)
         将字符读入数组的某一部分
         参数：
         cbuf - 目标缓冲区
         off - 开始存储字符处的偏移量
         len - 要读取的最多字符数
        返回：
          1. 读取的字符数
          2. 如果已到达流的末尾，则返回 -1


 */
public class Demo2Read {

    public static void main(String[] args) throws IOException {
        // 1. 创建字符输入流对象
        Reader reader
                = new InputStreamReader(new FileInputStream("b.txt"));


        // 以三种方式读取文件内容

        // public int read() 一次读取一个字符
        //int readChar;
        //while ((readChar = reader.read()) != -1) {
        //    char c = (char) readChar;
        //    System.out.print(c);
        //}

        //public int read(char[] cbuf) 一次读取一个字符数组
        // 习惯上给1024的整数倍
        //char[] chars = new char[1024];
        //int count = reader.read(chars);
        //String s = new String(chars, 0, count);
        //System.out.println(s);

        // public int read(char[] cbuf，int off ,int len) 读取多个字符，放入字符数组的一部分
        char[] chars = new char[1024];
        int off = 5;
        int len = chars.length - off;
        int count = reader.read(chars, off, len);

        String s = new String(chars, off, count);
        System.out.println(s);

        // 关闭流
        reader.close();


    }
}
